A circuit for compressing and decompressing image data in real time prior to printing, and more specifically, forming the image into 8 by 8 pixel blocks prior to transmission from the image generator to the printer so that the compression ratio can be improved by deleting un-needed blocks prior to transmission.
Image generators can produce pages having a variety of image material such as text, computer generated graphics and pictorial data in the form of multi-bit pixels. If this material is to be stored or transmitted, it should be compressed first to reduce system requirements. Normally, the material is separated into its component parts, so that each type of data is compressed by an algorithm that is most efficient for it.
Possible compression algorithms are of two varieties, lossless and lossy. Image data such as computer generated graphics and text are easily compressed using some kind of run length encoding, and can be efficiently compressed without the loss of data. On the other hand, pictorial data does not compress well and it is therefore difficult to know beforehand exactly what the compression ratio will be.
However, to support a high speed printer, a minimum compression ratio must be guaranteed. That is, the transmission rate, the page per minute rate of the printer, and the compression ratio of the data are related. For example, at a known print rate and data transmission rate, a minimum rate of compression will be required so that the printer will never exceed the rate at which data is delivered to it. Thus, a minimum guaranteed compression is required. As stated, pictorial data is the problem, and to increase the compressability of this data, greater rates of compression have been achieved by using an algorithm that allows some loss of data. One common lossy compression algorithm is the industry standard JPEG compression algorithm. This algorithm takes advantage of both vertical and horizontal patterns of data in 8 by 8 pixel blocks to produce its compression.
Normally, data is sent between systems on a scan line basis, while this algorithm compresses data by blocks. To reconcile these two requirements, data is normally sent to the compresser one scan line at a time, the compresser waits until it has received a band of 8 scan lines, divides the band into blocks, compresses the blocks one at a time, reassembles the compressed data block into scan lines, and transmits the compressed data one scan line at a time.
Similarly, the receiver accumulates scan lines until it has a band of blocks, decompresses them one at a time, and assembles 8 decompressed scan lines, which can be sent to a final destination such as a printer.
Frequently, text or graphics are printed over JPEG compressed pictures. These are compressed and decompressed one scan line at a time and can be assembled with the associated decompressed picture scan lines. The resultant overall compression ratio is satisfactory for many purposes, but a further improvement would be desirable.